// basicnpc.txt
// A very simple, naive text. Creature attacks anything it hates nearby.
// Once it has won, it returns to its home.
// Memory Cells:
//   Cell 0 - How creature moves.
//     0 - If 0, wander randomly. 
//     1 - Stands still until a target appears.
//     2 - Completely immobile, even if target appears.
//   Cell 1,2 - Stuff done flag. If both 0, nothing. Otherwise when this 
//     is killed, set to 1. (Example: If cell 1 is 3 and cell 2 is 5, when
//     creature is killed, sets SDF(3,5) to 1.)
//   Cell 3 - Dialogue node to start with if talked to. if left at 0, this
//     character doesn't talk.

begincreaturescript;

variables;

short i,target,
short last_abil_time;

body;

beginstate INIT_STATE;

	last_abil_time = get_current_tick();

	if (get_memory_cell(0) == 2)
		set_mobility(ME,0);
	break;

beginstate DEAD_STATE;
	// Set the appropriate stuff done flag for this character being dead

	message_dialog("Honestly, you'd think a creature that makes that much noise, would be a lot harder to kill. Alas, the bat falls with a single blow and not only falls its head comes off.","Determined to gain something out of this encounter, you take the head it might be useful to someone.");
	change_spec_item(6,1);

	if ((get_memory_cell(1) != 0) || (get_memory_cell(2) != 0))
		set_flag(get_memory_cell(1),get_memory_cell(2),1);
break;

beginstate START_STATE; 
	// if I have a target for some reason, go attack it

	if (target_ok()) {
		if (dist_to_char(get_target()) <= 16)
			set_state(3);
		}

	// Look for a target, attack it if visible
	if (select_target(ME,8,0)) {
		do_attack();
		set_state(3);
		}
		
	// Have I been hit? Strike back!
	if (who_hit_me() >= 0) {
		set_target(ME,who_hit_me());
		do_attack();
		set_state(3);
		}
		
	// Otherwise, just peacefully move around. Go back to start, if I'm too far
	// from where I started.
	if ((my_dist_from_start() >= 6) || ((my_dist_from_start() > 0) && (get_memory_cell(0) > 0))) {
		if (get_ran(1,1,100) < 40) 
			return_to_start(ME,1);
		}
		else if (get_memory_cell(0) == 0) {
			fidget(ME,25);
			}



	// if we're in combat and the above didn't give me anything to do, just
	// stop now. Otherwise, game will keep running script, and that eats up CPU time.
	if (am_i_doing_action() == FALSE)
		end_combat_turn();
break;

beginstate 3; // attacking
	
	if (get_flag(11,0) < 3) {
		print_named_str(ME,"lets out a horrifying scream.");
		play_sound(119);
		set_char_status(1000,20,5,0,1);
		set_char_status(1000,30,5,0,1);
		inc_flag(11,0,1);
}
	if (get_flag(11,5) == 0) {
		message_dialog("You've located the source of the horrible screams. It is an albino bat with gleaming red eyes. It lets out another horrible scream as it sees you. You try to gather your courage to face the beast.","");
		set_flag(11,5,1);
}


	if (target_ok() == FALSE)
		set_state(START_STATE);
	do_attack();
break;

beginstate TALKING_STATE;
	if (get_memory_cell(3) == 0) {
		print_str("Talking: It doesn't respond.");
		end();
		}
	begin_talk_mode(get_memory_cell(3)); 
break;
